A user interface can be the primary method that a user of a software program interacts with the software program. Software programs that have highly usable, user-friendly interfaces are typically more desirable to a user and can provide a competitive advantage to a software vendor when the user interface is well designed. Thus, software vendors can spend considerable resources on researching and experimenting with the usability of their programs, causing potentially increased development costs and slower release cycles.
However, even when the software vendor creates a well-designed interface for one individual user, a different individual may prefer a different interface. Currently, typical user interfaces provide minimal customization so each user is constrained to use essentially the same interface as every other user. Further, user expectations and skills change over time and so it may be desirable for the user interface to also change over time. However, changing the user interface can be time-consuming and expensive for the developer and the user must typically wait for the next release cycle to see any changes to the user interface. Thus, it can be challenging for a software vendor to evolve a user interface in line with the needs of an individual user and the needs of a community of users.